package xin.marcher.module.attribute.api;

import xin.marcher.module.attribute.domain.dto.*;
import xin.marcher.module.attribute.domain.request.*;
import xin.marcher.module.common.core.JsonResult;
import xin.marcher.module.common.core.PageResult;

import java.util.List;

/**
 * 属性管理相关操作API
 */
public interface AttributeApi {

    /**
     * 添加属性接口
     */
    JsonResult<AttributeInfoResultDTO> saveAttribute(AttributeInfoRequest request);

    /**
     * 给属性添加可选的属性值接口
     */
    JsonResult<AttributeValueResultDTO> saveAttributeValue(List<AttributeValueRequest> list);

    /**
     * 添加属性组接口
     */
    JsonResult<AttributeGroupResultDTO> saveAttributeGroup(AttributeGroupRequest request);

    /**
     * 添加属性模板接口
     */
    JsonResult<AttributeTemplateResultDTO> saveAttributeTemplate(AttributeTemplateRequest request);

    /**
     * 给模板添加模板内容接口
     */
    JsonResult<AttributeTemplateContentResultDTO> saveAttributeTemplateContents(List<AttributeTemplateContentRequest> list);

    /**
     * 属性分页查询接口
     */
    JsonResult<PageResult<AttributeInfoDTO>> pageAttributeInfo(QueryAttributeInfoRequest request);

    /**
     * 根据属性id查询属性及可选的属性值
     */
    JsonResult<List<AttributeValueDTO>> queryAttributeValueByAttributeId(Long attributeId);

    /**
     * 属性组分页查询接口
     */
    JsonResult<PageResult<AttributeGroupDTO>> pageAttributeGroup(QueryAttributeGroupRequest request);

    /**
     * 属性模板分页查询接口
     */
    JsonResult<PageResult<AttributeTemplateDTO>> pageAttributeTemplate(QueryAttributeTemplateRequest request);

    /**
     * 根据模板id查询模板内容接口
     */
    JsonResult<List<AttributeTemplateContentDTO>> queryAttributeTemplateContentByTemplateId(Long templateId);

}
